home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 4 / QRZ Ham Radio Callsign Database - Volume 4.iso / files / dsp / 56ktools / a5611.tz / a5611 / examples / pink.a56 < prev    next >
Text File  |  1992-08-11  |  2KB  |  83 lines

  1. ; pink noise (1/f) generator
  2. ; based on noise generator from Dr. Bubb but extended to 24 bits
  3. ; uses simple one-tap recursive filter
  4. ;
  5. ; written by: Quinn Jensen (jensenq@npd.novell.com)
  6. ;
  7.  
  8. include 'tdsg.basic.a56'
  9. ;***************************************************************
  10. ;
  11. ;    sample rate computations
  12. ;
  13. ;***************************************************************
  14.  
  15. dot
  16.     org    x:$10
  17.  
  18. NSTATE  dc      1               ;STATE OF NOISE GENERATOR (SHIFT REG)
  19.  
  20.  
  21.     org    y:$0
  22.  
  23.     org    p:dot        ;go back to P-space
  24. ;
  25. ; non-interrupt code
  26. ;
  27.  
  28. hf_init
  29.         MOVE    #$FEEDEE,X0         ;INITIAL STATE OF NOISE GENERATOR
  30.         MOVE    X0,X:<NSTATE
  31.     rts
  32.  
  33. ;
  34. ; fs = 32.552083 kHz
  35. ;
  36.  
  37. hf_comp
  38.     jsr    <saveregs
  39.     jsr    NOISE
  40.     move        #.005,x1
  41.     move        #.990,y1
  42.     move        a,x0
  43.     mpyr    x0,x1,a    x:<out_l,x0
  44.     macr    x0,y1,a
  45.     move        a,x:<out_l
  46.     jsr    NOISE
  47.     move        a,x0
  48.     mpyr    x0,x1,a    x:<out_r,x0
  49.     macr    x0,y1,a
  50.     move        a,x:<out_r
  51.     jsr    <restregs
  52.     rts
  53.  
  54. ;       NOISE GENERATION ROUTINE.  THIS ROUTINE USES A 15 BIT SHIFT
  55. ;       REGISTER LEFT JUSTIFIED IN THE VARIABLE "NSTATE".  AFTER THE STATE
  56. ;       IS LOADED, IT IS CHECKED TO SEE IF IT IS NORMALIZED.  IF IT IS
  57. ;       NORMALIZED (TOP TWO BITS ARE DIFFERENT), A 1 IS SET AS THE INPUT
  58. ;       TO THE SHIFT REGISTER AND THE REGISTER IS SHIFTED AND SAVED.
  59. ;
  60. ;         B23     B22                            B9      B8
  61. ;        ______________________________________________
  62. ;       | S14   | S13 |                        | S0   |
  63. ;       |       |     |      . . .             |      |<----------
  64. ;       |_______|_____|________________________|_______          |
  65. ;           |      |                                             |
  66. ;            \    /                                              |
  67. ;              XOR                                               |
  68. ;               \_________________________________________________
  69. ;
  70. ;
  71. ;       ASSUMES SCALING MODE IS OFF
  72. ;
  73. NOISE                                   ;DO NOISE GENERATION LOOP
  74.         CLR     B       X:<NSTATE,A     ;GET A ZERO IN B
  75.         TST     A   #>$000001,X0        ;CHECK A, GET A 1 IN LSB POSITION
  76.         TNR     X0,B                    ;IF NORMALIZED, THEN XOR=1
  77.         ADD     B,A                     ;SET LSB
  78.         ASL     A                       ;SHIFT BITS
  79.         MOVE    A1,X:<NSTATE            ;SAVE STATE
  80.         RTS                             ;RETURN WITH STATE
  81.  
  82.         END
  83.